0018.5 Validators
TL;DR for NestJS Serialization - Transform usnig ChatGPT
NestJS의 @Transform
데코레이터는 DTO에서 데이터를 변환하는 데 사용됩니다.
이 기능은 class-transformer
패키지를 활용하며, 입력 데이터를 가공하거나 출력 데이터를 특정 형식으로 변환할 때 유용합니다.
✅ 핵심 기능
- 출력 데이터 변환: 컨트롤러의
@SerializeOptions()
또는@UseInterceptors(ClassSerializerInterceptor)
를 통해 변환 가능 - 입력 데이터 변환:
@Transform(({ value }) => value.toUpperCase())
같은 함수를 사용해 DTO 속성 변환 가능 - 조건부 변환:
@Transform(({ obj, key }) => obj[key] ? obj[key].trim() : null)
처럼 조건을 활용한 변환 가능
🚀 사용 예시
import { Transform } from 'class-transformer';
export class UserDto {
@Transform(({ value }) => value.toUpperCase())
name: string;
@Transform(({ value }) => new Date(value), { toClassOnly: true })
createdAt: Date;
}
위 코드에서:
name
필드는 자동으로 대문자 변환됨createdAt
은 문자열을 Date 객체로 변환하여 DTO에 적용
📌 추가 사항
@Expose()
와 함께 사용하여 특정 필드만 직렬화 가능@Exclude()
를 이용해 특정 필드를 숨길 수도 있음toClassOnly
/toPlainOnly
옵션을 사용하여 변환 방향을 조절 가능
👉 DTO에서 데이터를 다룰 때, 원하는 형식으로 변환할 수 있는 강력한 기능을 제공! 🚀